/**
 * 在两个节点是同一个节点，我们才需要更新元素节点，而更新节点并不是很暴力的使用新节点覆盖旧节点。
 */

1.
// 静态节点 新旧两个节点是否都是静态节点，是的画就不需要进行更新操作，直接跳过更新操作。
// 静态节点就是指那些一旦渲染到界面上之后，无论怎么变化，都不会产生变化
// {/* <p>我是静态节点，我不需要任何变化</p> */ }

2.
//新虚拟节点有文本属性：当新旧两个节点不是静态节点，并且有不同的属性，以新的虚拟节点为标准来更新视图。根据新的vnode是否有text属性，更新节点分为两种情况。
/**
 * 1.如果新的虚拟节点有text属性，不管旧的虚拟节点是什么直接调用setTextNode方法来将视图中DOM节点的内容改变为新的虚拟节点的text属性保存的文字。
 * 2.如果旧的虚拟节点也是text属性，并且和新的虚拟节点的text文本一样，就不需要setTextNode方法来创建新的文本
 * 简单来说，就是当新虚拟节点有文本属性，并且和旧的虚拟节点的属性不一样，我们直接将真实DOM中的节点内容改为新虚拟节点的文本。
 */

3.
// 新的虚拟节点没有text属性那他就是一个元素节点。元素节点通常会有children属性，但也可能没有，所以有两种可能
/**
 * 1.有children
 * 有children的时候，也会分两种情况。就是看旧的虚拟节点有没有children属性
 * 有的话，需要对两个虚拟DOM的children进行更加详细的对比。更新children可能会移动某个子节点的位置，也有可能删除新增某个子节点。
 * 没有的话，说明旧虚拟节点就是一个空标签，要么就是有文本的文本节点。
 * 如果是文本节点，就先把文本清空变成空标签，然后将新的虚拟DOM中的children挨个创建真实的DOM元素并插入到视图下的DOM节点下。
 * 不是文本节点，省略就先把文本清空变成空标签这一步
 */